package com.yun.dz.control;


import com.yun.dz.bean.UserBean;
import com.yun.dz.model.UserInfoModal;
import com.yun.dz.utils.MyUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/UserInfoAddServlet")
public class UserInfoAddServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 0、设置rquest和response的编码格式--防止中文乱码

        // 解决中文乱码的问题
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");


        /////////////////////////////////////////////////这部分内容在高级框架中是自动实现（由springmvc的数据类型自动转换解决）/////////////
        // 参考：https://gitee.com/climpeaker/zb_webproject0920.git

        // 1、使用request的getParameter方法获取表单数据封装存储到javabean中

        // 获取用户端页面发送的表单数据
        // 创建一个实体类实例对象----作用：作为参数传递的载体
        UserBean userB = new UserBean();
        // 将从request中获取的表单数据设置给参数实体类
        userB.setUserName(request.getParameter("userName")); // 参数名要和form表单中的name属性值保持一致
        userB.setUserPsw(request.getParameter("userPsw"));
        userB.setUserAddress(request.getParameter("userAddress"));
        userB.setUserTel(request.getParameter("userTel"));
        userB.setUserRegDate(MyUtils.convertString2Date(request.getParameter("userRegDate"), "yyyy-MM-dd"));

        //////////////////////////////////////////////这部分内容在高级框架中是自动实现///////////////////////////////////////////////////////////

        // 2、调用modal层进行业务逻辑处理（modal层再调用数据库操作进行数据库处理）
        // 创建modal业务逻辑处理的实例类对象
        UserInfoModal userInfoM = new UserInfoModal();  // spring 的依赖注入解决
        // 用户信息新增处理
        int i = userInfoM.addUserInfo(userB);

        // 3、根据modal层的业务逻辑处理结果，进行新增结果显示页面跳转显示

        // 新增成功
        // 查询一下数据库，将所有的用户信息进行显示，并将最新添加的数据显示在最前面（主键倒序排列）

        List<UserBean> list = userInfoM.getAllUserInfo(true);
        // 将需要在页面上显示的数据缓存到jsp的四大作用域中；一般常用的是 request和session
        request.getSession().setAttribute("lstAllUserInfo", list);  // 缓存到session作用域对象中
        // 转发   logined.jsp页面(转发或重定向 二选一)
        request.getRequestDispatcher("WEB-INF/userManger/userInfoAddDetail.jsp").forward(request, response);
        // 重定向   logined.jsp页面(转发或重定向 二选一)
        //response.sendRedirect("logined.jsp");

    }
}